using MediatR;
using System.Collections.Generic;
using Work.API.Dtos.DrugManagement;
using Work.ErrorCode;

namespace Work.API.Applications.Read.Commands
{
    /// <summary>
    /// 获取药品列表查询（用于药品查看模块）
    /// 支持多条件搜索：药品名称、药品类型、价格范围等
    /// </summary>
    public class GetDrugsQuery : IRequest<ApiResult<List<DrugDto>>>
    {
        /// <summary>
        /// 药品名称（模糊查询）
        /// </summary>
        public string? DrugName { get; set; }

        /// <summary>
        /// 药品类型（中药/西药）
        /// </summary>
        public string? DrugType { get; set; }

        /// <summary>
        /// 费用名称（中药费/西药费）
        /// </summary>
        public string? CostName { get; set; }

        /// <summary>
        /// 剂型（盒/袋/g等）
        /// </summary>
        public string? DosageForm { get; set; }

        /// <summary>
        /// 规格（药丸/片剂/冲剂等）
        /// </summary>
        public string? Specification { get; set; }

        /// <summary>
        /// 进价最小值（用于价格范围查询）
        /// </summary>
        public decimal? MinPurchasePrice { get; set; }

        /// <summary>
        /// 进价最大值（用于价格范围查询）
        /// </summary>
        public decimal? MaxPurchasePrice { get; set; }

        /// <summary>
        /// 售价最小值（用于价格范围查询）
        /// </summary>
        public decimal? MinSellingPrice { get; set; }

        /// <summary>
        /// 售价最大值（用于价格范围查询）
        /// </summary>
        public decimal? MaxSellingPrice { get; set; }

        /// <summary>
        /// 是否只显示启用状态的药品（默认true）
        /// </summary>
        public bool OnlyEnabled { get; set; } = true;
    }
}

